home *** CD-ROM | disk | FTP | other *** search
/ Micromanía: 150 Juegos 2010 / 150Juegos_16.iso / Shareware / Juegos Flash / desertZone.dcr / Internal_21_spike.ls < prev    next >
Encoding:
Text File  |  2003-08-01  |  2.7 KB  |  70 lines

  1. property pTrackmanager, pSN, pPosition, pRadius, pFlying, pAnimCounter, pAnimStates, pShadowSN
  2.  
  3. on new me, tTrackManager, tPosition
  4.   pTrackmanager = tTrackManager
  5.   pShadowSN = pTrackmanager.getSpriteManager().getSN(1, #spikeshadow)
  6.   pSN = pTrackmanager.getSpriteManager().getSN(1, #spike)
  7.   pPosition = point(tPosition[1], tPosition[2])
  8.   pRadius = 20 * 20
  9.   pTrackmanager.INeedADisplayUpdateEachFrame(me)
  10.   pTrackmanager.INeedAnUpdateEachFrame(me)
  11.   pTrackmanager.getCollisionMap().addSpike(me)
  12.   sprite(pSN).member = member("spikeimage")
  13.   sprite(pSN).rect = sprite(pSN).member.rect
  14.   sprite(pSN).ink = 36
  15.   sprite(pShadowSN).ink = 36
  16.   sprite(pShadowSN).blend = 50
  17.   sprite(pShadowSN).loc = point(-100, -100)
  18.   t1 = member("spikeimage")
  19.   t2 = member("spikeimage2")
  20.   pAnimStates = [[#member: t1, #rotation: 0], [#member: t2, #rotation: 0], [#member: t1, #rotation: 50], [#member: t2, #rotation: 50]]
  21.   pAnimCounter = 0
  22.   me.Update()
  23.   return me
  24. end
  25.  
  26. on cleanUp me
  27.   pTrackmanager.getCollisionMap().removeSpike(me)
  28.   pTrackmanager.IDontNeedADisplayUpdateEachFrame(me)
  29.   pTrackmanager.IDontNeedAnUpdateEachFrame(me)
  30.   pTrackmanager.getSpriteManager().returnSN(pSN, #spike)
  31.   pTrackmanager.getSpriteManager().returnSN(pShadowSN, #spikeshadow)
  32.   pTrackmanager = 0
  33.   return 0
  34. end
  35.  
  36. on collision me, tPos, tOption
  37.   if getDistanceSquared(tPos, pPosition) < pRadius then
  38.     if tOption <> #fake then
  39.       tInitData = [#startsize: 10, #endsize: 100, #rotationspeed: 1, #foreColor: rgb("ffffff").paletteIndex, #backColor: rgb("ffffff").paletteIndex]
  40.       script("newsparks").new(pTrackmanager, pPosition, tInitData)
  41.       tInitData = [#startsize: 10, #endsize: 100, #rotationspeed: 1, #foreColor: rgb("000000").paletteIndex, #backColor: rgb("ffffff").paletteIndex]
  42.       script("newsparks").new(pTrackmanager, pPosition, tInitData)
  43.       if sprite(pSN).loc.inside(rect(0, 0, 640, 480)) then
  44.         script("soundjob").new(pTrackmanager, member("spikes_running_over"))
  45.       end if
  46.       me.cleanUp()
  47.     end if
  48.     return getNormalized(pPosition - tPos)
  49.   end if
  50. end
  51.  
  52. on Update me, tTime
  53.   pAnimCounter = pAnimCounter + (tTime / 3.0)
  54.   t = min(max(1, integer(pAnimCounter)), pAnimStates.count)
  55.   sprite(pSN).member = pAnimStates[t][#member]
  56.   sprite(pSN).rotation = pAnimStates[t][#rotation]
  57.   sprite(pSN).rect = sprite(pSN).member.rect
  58.   sprite(pShadowSN).member = member(pAnimStates[t][#member].memberNum + 1, "gfx")
  59.   sprite(pShadowSN).rotation = pAnimStates[t][#rotation]
  60.   sprite(pShadowSN).rect = sprite(pShadowSN).member.rect
  61.   if t = 4 then
  62.     pTrackmanager.IDontNeedAnUpdateEachFrame(me)
  63.   end if
  64. end
  65.  
  66. on display me, tScrollOffset
  67.   sprite(pSN).loc = pPosition + tScrollOffset
  68.   sprite(pShadowSN).loc = sprite(pSN).loc + point(2, 2)
  69. end
  70.